def chk(node):
    # 检查数字是否满足幻方要求
    tmp = node[1] + node[2] + node[3]
    if tmp != node[4] + node[5] + node[6]:
        return False
    if tmp != node[7] + node[8] + node[9]:
        return False
    if tmp != node[1] + node[4] + node[7]:
        return False
    if tmp != node[2] + node[5] + node[8]:
        return False
    if tmp != node[3] + node[6] + node[9]:
        return False
    if tmp != node[1] + node[5] + node[9]:
        return False
    if tmp != node[3] + node[5] + node[7]:
        return False
    return True


def dfs(cnt, n, node, vis, ans, anscnt):
    # 如果已经排列的元素数量等于 n，则检查是否满足幻方要求
    if cnt == n:
        if chk(node):  # 检查是否满足幻方的条件
            for i in range(1, 10):
                ans[i] = node[i]
            anscnt[0] += 1  # 记录找到的解的数量
        return

    # 如果该位置已填充数字，直接递归到下一层
    if node[cnt + 1] != 0:
        dfs(cnt + 1, n, node, vis, ans, anscnt)
        return

    # 尝试填充每一个数字
    for i in range(1, 10):
        if not vis[i]:  # 如果数字 i 没有被使用
            vis[i] = 1  # 标记数字 i 为已使用
            node[cnt + 1] = i  # 放置数字 i
            dfs(cnt + 1, n, node, vis, ans, anscnt)  # 递归
            node[cnt + 1] = 0  # 移除数字，回溯
            vis[i] = 0  # 恢复数字 i 的状态


def main():
    n = 9  # 总共有 9 个数字
    node = [0] * 10  # 存储当前排列的数字
    vis = [0] * 10  # 标记数字是否已被使用
    ans = [0] * 10  # 存储找到的一个合法解
    anscnt = [0]  # 用于记录合法解的数量
    node[1:4] = map(int, input().split())
    node[4:7] = map(int, input().split())
    node[7:10] = map(int, input().split())
    # 输入初始数字并标记已使用的数字
    for i in range(1, n + 1):
        vis[node[i]] = 1  # 标记该数字已经使用

    # 开始深度优先搜索
    dfs(0, n, node, vis, ans, anscnt)

    # 输出结果
    if anscnt[0] == 1:
        # 输出找到的唯一解
        print(*ans[1:4])
        print(*ans[4:7])
        print(*ans[7:10])
    else:
        print("Too Many")


if __name__ == "__main__":
    main()